package com.wgy.day36常见的函数式接口.Consumer接口;

import java.util.function.Consumer;

/**
 * Created by pc on 2020/12/10 21:32
 * Description: LearningJava
 */

/*
java.util.function.Consumer<T>:与Supplier接口刚好相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定,被称为消费型接口
Consumer<T>接口中包含默认方法:
              andThen():一步接一步,把两个Consumer接口组合到一起,再对数据进行消费
 举例说明:
 Consumer<String> con1
 Consumer<String> con2
 String s="hello";
 con1.accept(s);
 con2.accept(s);
    ||  等效写法
 con1.andThen(con2).accept(s);

注意:第二种写法 谁写在前面谁先消费
  */
public class Demo02ConsumerAndThen {
    //定义一个方法,方法的参数传递一个字符串和两个Consumer接口,Consumer接口的泛型使用字符串
    public static void method(String s, Consumer<String> con1,Consumer<String> con2){
/*

        con1.accept(s);
        con2.accept(s);
*/

     //使用andThen方法,把两个Consumer接口组合到一起,再对数据进行消费
        con1.andThen(con2).accept(s);//con1连接con1,先执行con1消费数据,再执行con2消费数据


    }

    public static void main(String[] args) {
        method("hello",
                (s)->{
                   //消费方式:把字符串转换为大写输出
                    System.out.println(s.toUpperCase());
                },
                (s)->{
                   //消费方式:把字符串转换为小写输出
                    System.out.println(s.toLowerCase());
                });

    }
}
